#include "../../include/Core/Timer.h"
void Timer::restart() {
    pass_time = 0;
    shotted = false;
}
void Timer::set_wait_time(int val) {
    wait_time = val;
}
void Timer::set_one_shot(bool flag) {
    one_shot = flag;
}
// 绑定一个callback回调函数以便用到不同的定时工具
void Timer::set_callback(function<void()> callback) {
    this->callback = callback;
};
void Timer::pause() {
    paused = true;
}
void Timer::resume() {
    paused = false;
}
// 核心
void Timer::on_update(int delta) {
    if (paused) {
        return;
    }
    // 累加帧更新过去的时间
    pass_time += delta;
    // 并将定时器启动以来过去的时间 和 期望到达的时间做比较
    // 若超时，就尝试触发定时器的回调
    if (pass_time >= wait_time) {
        // 定时器不是单次触发 || 单次触发且没有被触发过
        if ((!one_shot || (one_shot && !shotted)) && callback) callback();
        shotted = true;
        pass_time = 0;
    }
}
